home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / share / pyshared / PIL / ImtImagePlugin.py < prev    next >
Text File  |  2006-12-03  |  2KB  |  94 lines

  1. #
  2. # The Python Imaging Library.
  3. # $Id: ImtImagePlugin.py 2134 2004-10-06 08:55:20Z fredrik $
  4. #
  5. # IM Tools support for PIL
  6. #
  7. # history:
  8. # 1996-05-27 fl   Created (read 8-bit images only)
  9. # 2001-02-17 fl   Use 're' instead of 'regex' (Python 2.1) (0.2)
  10. #
  11. # Copyright (c) Secret Labs AB 1997-2001.
  12. # Copyright (c) Fredrik Lundh 1996-2001.
  13. #
  14. # See the README file for information on usage and redistribution.
  15. #
  16.  
  17.  
  18. __version__ = "0.2"
  19.  
  20. import string, re
  21.  
  22. import Image, ImageFile
  23.  
  24. #
  25. # --------------------------------------------------------------------
  26.  
  27. field = re.compile(r"([a-z]*) ([^ \r\n]*)")
  28.  
  29. ##
  30. # Image plugin for IM Tools images.
  31.  
  32. class ImtImageFile(ImageFile.ImageFile):
  33.  
  34.     format = "IMT"
  35.     format_description = "IM Tools"
  36.  
  37.     def _open(self):
  38.  
  39.         # Quick rejection: if there's not a LF among the first
  40.         # 100 bytes, this is (probably) not a text header.
  41.  
  42.         if not "\n" in self.fp.read(100):
  43.             raise SyntaxError, "not an IM file"
  44.         self.fp.seek(0)
  45.  
  46.         xsize = ysize = 0
  47.  
  48.         while 1:
  49.  
  50.             s = self.fp.read(1)
  51.             if not s:
  52.                 break
  53.  
  54.             if s == chr(12):
  55.  
  56.                 # image data begins
  57.                 self.tile = [("raw", (0,0)+self.size,
  58.                              self.fp.tell(),
  59.                              (self.mode, 0, 1))]
  60.  
  61.                 break
  62.  
  63.             else:
  64.  
  65.                 # read key/value pair
  66.                 # FIXME: dangerous, may read whole file
  67.                 s = s + self.fp.readline()
  68.                 if len(s) == 1 or len(s) > 100:
  69.                     break
  70.                 if s[0] == "*":
  71.                     continue # comment
  72.  
  73.                 m = field.match(s)
  74.                 if not m:
  75.                     break
  76.                 k, v = m.group(1,2)
  77.                 if k == "width":
  78.                     xsize = int(v)
  79.                     self.size = xsize, ysize
  80.                 elif k == "height":
  81.                     ysize = int(v)
  82.                     self.size = xsize, ysize
  83.                 elif k == "pixel" and v == "n8":
  84.                     self.mode = "L"
  85.  
  86.  
  87. #
  88. # --------------------------------------------------------------------
  89.  
  90. Image.register_open("IMT", ImtImageFile)
  91.  
  92. #
  93. # no extension registered (".im" is simply too common)
  94.